import { defineConfig, loadEnv } from 'vite';
import viteBaseConfig from './vite.base.config';
import viteDevConfig from './vite.dev.config';
import viteProdConfig from './vite.prod.config';

// 策略模式
const envResolver = {
  'build': () => {
    console.log('生产环境');
    return {...viteBaseConfig, viteProdConfig};
  },
  'serve': () => {
    console.log('开发环境');
    return Object.assign({}, viteBaseConfig, viteDevConfig); // 新配置里可能配置envDir
  }
}

// TODO：yudao是这么写的
export default defineConfig(({ command, mode }) => {
  // 当前env文件所在的目录
  // 这里和springboot的配置文件一样，.env类比application.yaml  .env.development类比application-dev.yaml
  // 默认加载.env，再根据这里的mode加载其他的.env.xxx 并且是合并的关系
  const env = loadEnv(mode, process.cwd(), "");
  console.log('env//////', mode); // 此时APP_KEY就有了
  console.log('env//////', env); // 此时APP_KEY就有了
  // 是build还是serve取决于我们敲得命令是开启开发环境还是生产环境
  return envResolver[command]();
});
